// 1. 引入模块
import Vue from 'vue'
import VueRouter from 'vue-router'
// 2. 安装或注册模块
Vue.use(VueRouter)

// 原型上修改push方法
const originPush = VueRouter.prototype.push  // 先将之前的存储到一个变量当中
const originReplace = VueRouter.prototype.replace // 同上

// 修改VueRouter原型上的push 用于解决重复跳转时报错的问题
VueRouter.prototype.push = function(location,okCallBack,errCallBack){
  if(okCallBack === undefined && errCallBack === undefined){
    // 上面的判断成立的话，表示没有传递这两个参数
    originPush.call(this,location).catch(()=>{})  // 统一处理报错的问题 一劳永逸
  }else {
    originPush.call(this,location,okCallBack,errCallBack)
  }
}

// 修改VueRouter原型上的replace 用于解决重复跳转时报错的问题
VueRouter.prototype.replace = function(location,okCallBack,errCallBack){
  if(okCallBack === undefined && errCallBack === undefined){
    // 上面的判断成立的话，表示没有传递这两个参数
    originReplace.call(this,location).catch(()=>{})  // 统一处理报错的问题 一劳永逸
  }else {
    originReplace.call(this,location,okCallBack,errCallBack)
  }
}


// 3. 创建路由实例对象并书写路由规则 
import Home from '../pages/Home'
import Search from '../pages/Search'
import Login from '../pages/Login'
import Register from '../pages/Register'
const router = new VueRouter({
  mode:'history',  // 去掉地址栏中的#
  routes: [
    {
      name:'home',
      path: '/home',
      component: Home,
      meta: {
        isShowNav:true  // 默认是要显示的
      }
    },
    {
      name:'search',
      path: '/search',
      component:Search
    },
    {
      name:'login',
      path: '/login',
      component: Login,
      meta:{isHiddenFooter:true}
    },
    {
      name:'register',
      path: '/register',
      component: Register,
      meta: { isHiddenFooter: true }
      // 所谓的路由元就是一个普通的对象属性，此属性存储的数据是一个对象
    },
    {
      path: '/',
      redirect:'/home'
    }
  ]
})
// 4. 导出路由对象
export default router